﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Mogre;
using MogreNewt;

namespace eqgen
{
    class GameCamera
    {
        // Postać, do której przywiązana jest kamera
        public Character Character;
        // Odległość w jakiej kamera trzyma się od głowy postaci
        public float Distance;
        // Kąt, pod jakim kamera spogląda na głowę postaci
        public Degree Angle;

        public void Update()
        {
            Vector3 offset =
            Character.Node.Orientation * (-Vector3.UNIT_Z + (Vector3.UNIT_Y * (float)System.Math.Tan(Angle.ValueRadians))).NormalisedCopy * Distance;

            Vector3 head = Character.Node.Position + Character.Profile.HeadOffset;
            Vector3 desiredPosition = head + offset;

            Engine.Singleton.Camera.Position += (desiredPosition - Engine.Singleton.Camera.Position) * 0.1f;
            Engine.Singleton.Camera.LookAt(head);
        }
    }
}
